libxc: Add xc_domain_setdebugging in xenctrl API
authorAlex Williamson <alex.williamson@hp.com>
Tue, 26 Jun 2007 22:18:28 +0000 (16:18 -0600)
committerAlex Williamson <alex.williamson@hp.com>
Tue, 26 Jun 2007 22:18:28 +0000 (16:18 -0600)
Use it in xc_ptrace.c

Signed-off-by: Tristan Gingold <tgingold@free.fr>
Acked-by: Keir Fraser <keir@xensource.com>
tools/libxc/xc_domain.c
tools/libxc/xc_ptrace.c
tools/libxc/xenctrl.h

index 92a8b985111a3475712f9014c49cae28cb599378..c63135e32e186272cddd7f663005c49b92819681 100644 (file)
@@ -696,6 +696,18 @@ int xc_get_hvm_param(int handle, domid_t dom, int param, unsigned long *value)
     return rc;
 }
 
+int xc_domain_setdebugging(int xc_handle,
+                           uint32_t domid,
+                           unsigned int enable)
+{
+    DECLARE_DOMCTL;
+
+    domctl.cmd = XEN_DOMCTL_setdebugging;
+    domctl.domain = domid;
+    domctl.u.setdebugging.enable = enable;
+    return do_domctl(xc_handle, &domctl);
+}
+
 /*
  * Local variables:
  * mode: C
index 288671b5bb5950ce6cdab97a09f912f0e169f394..cdccd4da9067454f256c47f7c98206b2a411b2b3 100644 (file)
@@ -566,10 +566,7 @@ xc_ptrace(
         }
         if ( request == PTRACE_DETACH )
         {
-            domctl.cmd = XEN_DOMCTL_setdebugging;
-            domctl.domain = current_domid;
-            domctl.u.setdebugging.enable = 0;
-            if ((retval = do_domctl(xc_handle, &domctl)))
+            if ((retval = xc_domain_setdebugging(xc_handle, current_domid, 0)))
                 goto out_error_domctl;
         }
         regs_valid = 0;
@@ -593,10 +590,7 @@ xc_ptrace(
         else if ((retval = xc_domain_pause(xc_handle, current_domid)))
             goto out_error_domctl;
         current_is_hvm = !!(domctl.u.getdomaininfo.flags&XEN_DOMINF_hvm_guest);
-        domctl.cmd = XEN_DOMCTL_setdebugging;
-        domctl.domain = current_domid;
-        domctl.u.setdebugging.enable = 1;
-        if ((retval = do_domctl(xc_handle, &domctl)))
+        if ((retval = xc_domain_setdebugging(xc_handle, current_domid, 1)))
             goto out_error_domctl;
 
         if (get_online_cpumap(xc_handle, &domctl.u.getdomaininfo, &cpumap))
index df71417c7ea41968daca4a2d6f06c32b113ffe2a..15f08f12a51aaf9d2d18649c789d180bf3eac918 100644 (file)
@@ -433,6 +433,18 @@ int xc_domain_send_trigger(int xc_handle,
                            uint32_t trigger,
                            uint32_t vcpu);
 
+/**
+ * This function enables or disable debugging of a domain.
+ *
+ * @parm xc_handle a handle to an open hypervisor interface
+ * @parm domid the domain id to send trigger
+ * @parm enable true to enable debugging
+ * return 0 on success, -1 on failure
+ */
+int xc_domain_setdebugging(int xc_handle,
+                           uint32_t domid,
+                           unsigned int enable);
+
 /*
  * EVENT CHANNEL FUNCTIONS
  */